﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using TCC.WCFService.App_Data;
using TCC.WCFService.Model;

namespace TCC.WCFService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "LegacyService" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select LegacyService.svc or LegacyService.svc.cs at the Solution Explorer and start debugging.
    [ServiceBehavior(Namespace = Constants.Namespace)]
    public class LegacyService : ILegacyService
    {
        public List<ComprasEntity> GetOrdensCompra()
        {
            LegacyEntities context = new LegacyEntities();
            var compras = context.Compras.ToList();

            if (compras != null)
            {
                return TranslateComprasEntity(compras);
            }
            else
            {
                throw new Exception("Nenhuma compra para ser integrada!");
            }
        }

        private List<ComprasEntity> TranslateComprasEntity(List<Compras> compras)
        {
            List<ComprasEntity> listCompras = new List<ComprasEntity>();

            foreach (var item in compras)
            {
                ComprasEntity comprasEntity = new ComprasEntity();

                comprasEntity.ID = item.ID;
                comprasEntity.IdPessoa = item.IdPessoa;
                comprasEntity.DataCompra = item.DataCompra;
                comprasEntity.IdFormaPagamento = item.IdFormaPagamento;
                comprasEntity.DataEntrega = item.DataEntrega;
                comprasEntity.ValorMercadoria = item.ValorMercadoria;
                comprasEntity.ValorImpostos = item.ValorImpostos;
                comprasEntity.ValorDesconto = item.ValorDesconto;
                comprasEntity.ValorTotalCompra = item.ValorTotalCompra;

                comprasEntity.Pessoas = new PessoasEntity();
                comprasEntity.Pessoas.ID = item.Pessoas.ID;
                comprasEntity.Pessoas.FisicaJuridica = item.Pessoas.FisicaJuridica;
                comprasEntity.Pessoas.TipoPessoa = item.Pessoas.TipoPessoa;
                comprasEntity.Pessoas.Nome = item.Pessoas.Nome;
                comprasEntity.Pessoas.RazaoSocial = item.Pessoas.RazaoSocial;
                comprasEntity.Pessoas.CpfCnpj = item.Pessoas.CpfCnpj;
                comprasEntity.Pessoas.Telefone = item.Pessoas.Telefone;
                comprasEntity.Pessoas.Email = item.Pessoas.Email;
                comprasEntity.Pessoas.Inativo = item.Pessoas.Inativo;

                comprasEntity.FormasPagamento = new FormasPagamentoEntity();
                comprasEntity.FormasPagamento.ID = item.FormasPagamento.ID;
                comprasEntity.FormasPagamento.Nome = item.FormasPagamento.Nome;
                comprasEntity.FormasPagamento.QuantidadeParcelas = item.FormasPagamento.QuantidadeParcelas;

                //comprasEntity.ItensCompra = item.ItensCompra.ToList();

                listCompras.Add(comprasEntity);
            }

            return listCompras;
        }
    }
}
